#include<bits/stdc++.h>
using namespace std;
int dp[100005];
int main() {
    int n, k;
    cin >> n >> k;
    // 初始化dp初始状态
    for (int i = 0; i < n; i++) {
        dp[i] = i; // 初始化为多少分钟需要调整多少次，默认为一分钟调整一次；
    }
    for (int i = k; i < n; i += k) {
        dp[i] = dp[i - k] + 1; // 从0开始，每过k步 就+1
    }
    int sum = -1;
    while (1) { // 如果结果是收敛的，则停止循环。
        int now_sum = 0;
        for (int i = 1; i < n; i ++) {
            now_sum += dp[i];
            // 状态转移方程式
            dp[i] = min(dp[(i + n - k) % n] + 1, dp[i - 1] + 1);
        }
        if (now_sum == sum) break;
        sum = now_sum;
    }
    int ans = dp[0];
    for (int i = 0; i < n; i++) {
        ans = max(ans, dp[i]);
    }
    cout << ans << endl;
    return 0;
}